package es.qb.deportivos.pl.controller;

import java.util.List;

import org.springframework.stereotype.Controller;

import es.qb.deportivos.exception.GeneralBusinessException;
import es.qb.deportivos.exception.GeneralPLException;
import es.qb.deportivos.il.domain.Jugador;
import es.qb.deportivos.il.domain.Tesoreria;
import es.qb.deportivos.il.helper.TesoreriaHelper;

/**
 * Controller asociado a la pantalla de Tesoreria.
 * 
 */
@Controller
public class TesoreriaController {

	/**
	 * Atributo tesoreriaHelper
	 */
	public TesoreriaHelper tesoreriaHelper;

	/**
	 * @return the tesoreriaHelper
	 */
	public TesoreriaHelper getTesoreriaHelper() {
		return tesoreriaHelper;
	}

	/**
	 * @param tesoreriaHelper
	 *            the tesoreriaHelper to set
	 */
	public void setTesoreriaHelper(TesoreriaHelper tesoreriaHelper) {
		this.tesoreriaHelper = tesoreriaHelper;
	}

	public List<Tesoreria> cargarTesoreria() throws GeneralPLException {

		return tesoreriaHelper.cargarTesoreria();

	}

	public Double calculaTotal() throws GeneralPLException {

		return tesoreriaHelper.calculaTotal();

	}

	public List<Tesoreria> insertarTesoreriaNueva(Tesoreria tesoreria, List<Tesoreria> tesorerias) throws GeneralBusinessException {

		if (tesoreria.getJugador() == null || tesoreria.getJugador().getId() == null) {
			tesoreria.setJugador(null);
		}
		Tesoreria insertTesoreria = tesoreriaHelper.getTesoreriaBS().insert(tesoreria);

		tesorerias.add(insertTesoreria);

		return tesorerias;
	}

	public Tesoreria tesoreriaNewInstance() {
		return new Tesoreria();
	}

	public List<Tesoreria> borrarTesoreria(Tesoreria tesoreriaBorrar, List<Tesoreria> listaTesoreria) throws GeneralPLException {

		tesoreriaHelper.borrarTesoreria(tesoreriaBorrar);

		listaTesoreria.remove(tesoreriaBorrar);

		return listaTesoreria;
	}

	public Boolean comprobarDeudas(Jugador jugador) throws GeneralPLException {
		Boolean moroso = false;

		List<Tesoreria> listTesorerias = tesoreriaHelper.cargarTesoreria();

		for (Tesoreria tesoreria : listTesorerias) {
			if ((tesoreria.getJugador() != null && tesoreria.getJugador().getId().equals(jugador.getId()))
					&& (tesoreria.getConcepto() != null && tesoreria.getConcepto().equals("Pendiente de pago"))) {
				moroso = true;
			}
		}
		return moroso;
	}

	public Tesoreria editarTesoreria(Tesoreria tesoreria) throws GeneralBusinessException {

		tesoreriaHelper.getTesoreriaBS().update(tesoreria);

		return null;
	}

}
